package com.shujia.spark.sql

import org.apache.spark.sql.{DataFrame, SparkSession}

object Demo6SparkOnHive {

  def main(args: Array[String]): Unit = {


    /**
      *
      * 可以整合hive  使用hive的元数据
      * 1、在hive的hive-site.xml修改一行配置，增加了这一行配置之后，以后在使用hive之前都需要先启动元数据服务
      * <property>
      * <name>hive.metastore.uris</name>
      * <value>thrift://master:9083</value>
      * </property>
      * 2、将hive-site.xml  复制到spark conf目录下
      * cp hive-site.xml /usr/local/soft/spark-2.4.5/conf/
      *
      * 3、启动hive元数据服务
      * nohup hive --service metastore >> metastore.log 2>&1 &
      *
      */

    val spark: SparkSession = SparkSession
      .builder()
      .appName("submit")
      .config("spark.sql.shuffle.partitions", 1)
      //开始hive的元数据支持，直接使用hive中已存在的表
      .enableHiveSupport()
      .getOrCreate()

    import spark.implicits._
    import org.apache.spark.sql.functions._


    //加载hive中的表
    val student: DataFrame = spark.table("default.student")

    student
      .groupBy($"clazz")
      .agg(count($"clazz") as "count")
      .show()



    /**
      * 直接编写sql 使用hive中的表
      *
      */

    spark.sql(
      """
        |select clazz,count(1) from student group by clazz
        |
      """.stripMargin)
      .show()


    /**
      * 提交到服务器中运行
      * spark-submit --class com.shujia.spark.sql.Demo6SparkOnHive --master yarn-client spark-1.0.jar
      */


  }

}
